#pragma once

#include "MyActiveInterface.h"
#include "MyHsmMessageHandler.h"

namespace CO { namespace MyGroupNamespace { namespace MyPackageNamespace {

class MyHsmMessageHandlerAO :
	public SpiFoundation::RoomFW::ActiveObject,
	public MyActiveInterface
{
public:

	//
	// Constructor/Destructor.
	//
	MyHsmMessageHandlerAO(void);
	virtual ~MyHsmMessageHandlerAO(void);

	//
	// ISystemComponent overrides.
	//
	virtual bool initialize(SpiFoundation::Configuration::ConfigKey& configRoot);

	//
	// IActiveObject overrides.
	//
	virtual SpiFoundation::RoomFW::ObjectId getObjectId(void) const;
	virtual const char* getObjectName(void) const;

private:

	//
	// Message handler for a more modular design.
	//
	MyHsmMessageHandler::Ptr messageHandler_;

	//
	// TODO:  Add private attributes.
	//
	long myConfigValue_;
};
//
// TODO:  Add a smart pointer typedef for your class.
//
typedef ::boost::shared_ptr<MyHsmMessageHandlerAO> MyHsmMessageHandlerAOSP;

}}} // End namespace
